package zzf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


/*
* 写在类上的RequestMapping位当前控制器的所有请求指定了一个基准路径
* */
@RequestMapping("haha")
@Controller
public class RequestMappingTestController {

    /*
    * 一个方法处理一个请求,不能用两个方法处理相同的一个请求
    *
    * */
    @RequestMapping("/handle01")
    public String handle01(){
        System.out.println("RequestMappingTestController...handle01");
        return "success";
    }


    /*
    * RequestMapping的属性:
    * method:限定请求方式类型
    *   GET,
        HEAD,
        POST,
        PUT,
        PATCH,
        DELETE,
        OPTIONS,
        TRACE;
    * params:规定请求参数
    *
    * */
    @RequestMapping(value = "/handle02",method = RequestMethod.POST)
    public String handle02(){
        System.out.println("RequestMappingTestController...handle02");
        return "success";
    }

    /*
    * RequestMapping的属性:
    * params:规定请求参数
    *   params = {"username"},请求必须携带一个username的参数,不带的话就会404
    *   params = {"!username"},请求必须不能携带一个username的参数,带了的的话就会404
    *   params = {"username=123"},请求必须携带一个username的参数,并且参数值必须是123
    *   params = {"!username=123"},请求不能携带一个名为username值为123的参数,不带username或者username不等于123都可以
    * */
    @RequestMapping(value = "/handle03",params = {"username!=123"})
    public String handle03(){
        System.out.println("RequestMappingTestController...handle03");
        return "success";
    }

    /*
    * RequestMapping的属性:
    * headers:规定请求头
    *   和params一样,能写简单的表达式
    *   User_Agent:浏览器信息
    *
    * 规定请求只能允许edge浏览器请求
    * */
    @RequestMapping(value = "/handle04",headers = {"User_Agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37"})
    public String handle04(){
        System.out.println("RequestMappingTestController...handle04");
        return "success";
    }

    /*
    * consumes:只接受哪种内容类型的请求,规定请求头中的Content-Type
    * produces:告诉浏览器返回的内容类型是什么,给响应头加上Content-Type
    * */
    @RequestMapping(value = "/handle04")
    public String handle05(){
        System.out.println("RequestMappingTestController...handle05");
        return "success";
    }
}
